/*
 * Copyright (C) 2010 M. Hautle.
 * 
 * This file is part of SimpleEL.
 * 
 * SimpleEL is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option) any later version.
 * 
 * SimpleEL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License along with SimpleEL. If not, see <http://www.gnu.org/licenses/>.
 */
package ch.simpleel.internal.asm;

/**
 * Entry of an element identified by a hashcode.
 * 
 * @author M. Hautle
 */
abstract class HashEntry implements Comparable<HashEntry> {
    /** The hashcode of the entry */
    final int hash;

    /**
     * Default constructor.
     * 
     * @param hash The element hash
     */
    public HashEntry(int hash) {
        this.hash = hash;
    }

    /**
     * Returns the entry for the given index.
     * 
     * @param index The index
     * @return The entry
     */
    public abstract SimpleEntry getEntry(int index);

    /**
     * Returns the number of entries.
     * 
     * @return The number of entries
     */
    public abstract int getEntryCount();

    /**
     * {@inheritDoc}
     */
    @Override
    public int compareTo(HashEntry o) {
        if (hash == o.hash)
            return 0;
        if (hash < o.hash)
            return -1;
        return 1;
    }
}
